// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router';
import store from './store';
import axios from 'axios';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import Footer from './components/footer.vue';
// 引入moment
import moment from 'moment';
// 引入echarts
import echarts from 'echarts'


axios.defaults.baseURL = '/api';
axios.defaults.timeout = 9000;

Vue.use(ElementUI);
Vue.prototype.$axios = axios;
Vue.prototype.$echarts = echarts

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
// 请求拦截器
axios.interceptors.request.use(
  (config) => {
    const token = sessionStorage.getItem('SaToken');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`; // 添加 token 到请求头
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
axios.interceptors.response.use(
  (response) => {
    // 如果请求成功，直接返回响应
    return response;
  },
  (error) => {
    if (error.response) {
      const { status, message } = error.response.data; // 获取后端返回的错误信息

      if (status === 401) {
        // 如果是 401 错误（未登录），显示错误信息并跳转到登录页面
        ElementUI.Message.error(message || '未登录，请重新登录！');  // 提示信息
        router.push('/'); // 跳转到登录页面
      } else {
        // 其他错误可以根据需要处理
        ElementUI.Message.error(message || '请求出错，请稍后再试！');
      }
    }

    return Promise.reject(error);
  }
);
